package main

import (
	"os"
	"fmt"
	"io"
)

func main()  {
	list := os.Args //获取命令行参数

	//一共需要三个参数
	if len(list) != 3{
		fmt.Println("usages xxx strFile dslFiles")
		return
	}

	//源文件和目标文件不能相同
	srcFileName := list[1]
	dslFileName := list[2]
	if srcFileName == dslFileName {
		fmt.Println("源文件和目标文件不能相同")
		return
	}

	//打开并读取源文件
	sN, err := os.Open(srcFileName)
	if err != nil {
		fmt.Println("err =", err)
		return
	}


	//打开目录文件
	dN, err1 := os.Create(dslFileName)
	if err1 != nil {
		fmt.Println("err =", err)
		return
	}

	//操作完毕后关闭文件
	defer sN.Close()
	defer dN.Close()

	//复制文件
	buf := make([]byte,  1024 * 4)
	for {
		n, err2 := sN.Read(buf)
		if err2 != nil {
			if err2 == io.EOF {
				break
			}
			fmt.Println("err =", err)
		}
		//读多少写多少
		dN.Write(buf[:n])
	}
}